package br.com.clinica.supercao.dao.impl;

import java.util.ArrayList;
import java.util.List;

import br.com.clinica.supercao.dao.PessoaDAO;
import br.com.clinica.supercao.entity.Pessoa;
import br.com.clinica.supercao.entity.filter.AbsPessoaSearchFilter;
import br.com.clinica.supercao.entity.filter.PessoaSearchFilter;
import br.com.rpteixeira.dao.AbstractEntityDAO;

public abstract class AbstractPessoaDAO<T extends Pessoa,S extends AbsPessoaSearchFilter> extends
		AbstractEntityDAO<T, S> implements PessoaDAO<T,S> {

	@Override
	protected void doPrepareQuery(StringBuffer query,
			S entitySearchFilter) {
		
	}

	@Override
	protected Object[] doPrepareQueryFrom(StringBuffer query,
			S entitysearchfilter) {
		List<Object> args = new ArrayList<Object>();
		if(entitysearchfilter instanceof PessoaSearchFilter){
			PessoaSearchFilter pessoaSearchFilter =(PessoaSearchFilter) entitysearchfilter;
			if(pessoaSearchFilter.getNome()!=null && !pessoaSearchFilter.getNome().isEmpty()){
				query.append(" and oEntidade.nome=?");
				args.add(pessoaSearchFilter.getNome());
			}
			if(pessoaSearchFilter.getEndereco()!=null && !pessoaSearchFilter.getEndereco().isEmpty()){
				query.append(" and oEntidade.endereco=?");
				args.add(pessoaSearchFilter.getEndereco());
			}
		}
		return args.toArray();
	}
}
